package com.miniblog.user.server.service.impl;

import com.alibaba.druid.support.json.JSONUtils;
import com.miniblog.common.enums.Constant;
import com.miniblog.user.server.service.AuthService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName： AuthServiceImpl.java
 * @Path： com.miniblog.user.server.service.impl.AuthServiceImpl.java
 * @Description：《安全认证
 * @Author： tanyp
 * @Date： 2020/1/7 13:57
 * @Reviser：
 */
@Slf4j
@Service
public class AuthServiceImpl implements AuthService {

    // 默认过期时长，单位：秒
    @Value("${token.timeout}")
    private Integer TIMEOUT;

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * @MethodName： qryUserIdByUser
     * @Description：根据id获取用户信息
     * @Author： tanyp
     * @Date： 2020/1/7 13:58
     * @Params： [userId]
     * @Return： token
     * @Reviser：
     */
    @Override
    public Object qryUserIdByUser(String userId) {
        return redisTemplate.opsForValue().get(Constant.TOKEN_KEY.getMessage() + userId);
    }

    /**
     * @MethodName： addCache
     * @Description：将用户信息存储到缓存中
     * @Author： tanyp
     * @Date： 2020/1/7 14:54
     * @Params： [userId, token]
     * @Return： void
     * @Reviser：
     */
    @Override
    public void addCache(Map<String,Object> param) {
        String key = Constant.TOKEN_KEY.getMessage() + param.get("userId");
        String val = JSONUtils.toJSONString(param);
        redisTemplate.opsForValue().set(key, val, TIMEOUT, TimeUnit.SECONDS);
    }

    /**
     * @methodName：delCache
     * @description：清除缓存信息
     * @author：tanyp
     * @dateTime：2020/1/12 16:00
     * @Params： [userId]
     * @Return： void
     * @editNote：
     */
    @Override
    public void delCache(String userId) {
        redisTemplate.delete(Constant.TOKEN_KEY.getMessage() + userId);
    }
}
